package com.kgc.dao.mapper;

import com.kgc.entity.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ArticlesMapper {

    //查询草稿
    List<Articles> getdraft( int authorID);

    // 条件查询文章
    List<Articles> getAllArticle(@Param("queryKey") String queryKey,
                                 @Param("queryDateBegin") String queryDateBegin,
                                 @Param("queryDateEnd") String queryDateEnd,
                                 @Param("articleSort") Integer articleSort);

    //查询指定用户文章
    List<Articles> getArticleByUserID(int userId);

    //发布文章下拉框文章类别
    List<ArticleSort> getArticleType();

    // 发布文章/存草稿 二合一
    int addArticle(Articles article);

    // 删除指定用户下的指定文章
    int deleteArticle(@Param("authorId") Integer authorId,@Param("articleId") Integer articleId );

    //查询指定文章（可用修改文章时数据回显）
    Articles getArticleByArticleID(int articleId);

    // 修改文章
    int updateArticle(Articles article);

    //查询文章收藏记录
    List<ArticleFavorites> getArticleFavorites(@Param("userID") int userID,@Param("articleID") int articleID);

    //首次添加收藏记录
    int addArticleFavorites(ArticleFavorites articleFavorites);

    //修改收藏状态
    int updateFavoritesStatus(ArticleFavorites articleLikes1);

    //修改文章收藏量
    int updateFavoritesCount(@Param("articleID") int articleID,@Param("p") int p);

   // 查询收藏夹
    List<Articles> getuserFavorites(@Param("userID") int userID);

    //增加文章浏览量
    int addarticlePageview(int articleID);

    //添加浏览记录 (直接调用该接口)
    int addarticleViews(Articleviews articleViews);


    //查询文章点赞记录
    List<ArticleLikes> getArticleLikes(@Param("userID") int userID, @Param("articleID") int articleID);

    //首次添加点赞记录
    int addArticleLikes(ArticleLikes articleLikes);

    //修改点赞状态
    int updateLikesStatus(ArticleLikes articleLikes);

    //修改文章点赞量
    int updateLikesCount(@Param("articleID") int articleID,@Param("p") int p);

//    文章排序
    List <Articles> sort();

    //获取当前用户对当前文章的 点赞状态
    String getstatus1(@Param("articleId") Integer articleId,@Param("userId") Integer userId);
    //获取当前用户对当前文章的 点赞状态
    String getstatus2(@Param("articleId") Integer articleId,@Param("userId") Integer userId);

//   管理员修改文章类别
    int updatesort(ArticleSort articleSort);

//    管理员删除文章类别
    int deletesort(ArticleSort articleSort);
    //    管理员新增文章类别
    int addsort(ArticleSort articleSort);

    // 管理员条件查询文章
    List<Articles> getAllArticle1(@Param("queryKey") String queryKey,
                                 @Param("queryDateBegin") String queryDateBegin,
                                 @Param("queryDateEnd") String queryDateEnd,
                                 @Param("articleSort") Integer articleSort,
                                 @Param("articleID") Integer articleID);

//    管理员下架上架文章
    int updateArticleStatus(@Param("articleStatus") String articleStatus,@Param("articleID") Integer articleID);

//    管理员给个人用户发通知
    int sendnotifications(Usernotifications usernotifications);

    //用户查看个人通知
    List<Usernotifications> getnotifications(Integer userId);

    //用户已读个人通知
    int readnotifications(Integer notificationsId);
}
